package com.hsurosy.hsuchain.nft.limiter;

/**
 * 限流服务接口
 *
 * @Author Hsu琛君珩
 * @Date 2024-10-05 4:34
 * @Description
 * @Version: v1.0.0
 */
public interface RateLimiter {

    /**
     * 判断一个key是否可以通过限流规则
     * <p>
     * 根据给定的限流 key、限制数量和窗口大小来决定请求是否允许通过。
     * </p>
     *
     * @param key 限流的key，通常是某个资源或用户的唯一标识
     * @param limit 限流的数量，表示在窗口期内允许的最大请求次数
     * @param windowSize 窗口大小，单位为秒，表示在多少秒的时间窗口内进行限流
     * @return 返回布尔值，true 表示允许通过，false 表示拒绝
     */
    public Boolean tryAcquire(String key, int limit, int windowSize);
}
